/**
 * @param {number[][]} costs
 * @return {number}
 * @description 0为红色的费用 1为蓝色的费用 2为绿色的费用
 * @description 优化 滚动数组
 */

var minCost = function (costs) {
    // 处理边界情况
    if (!costs || !costs.length) return 0
    // 缓存房子的个数
    const len = costs.length
    // 开始更新状态
    for (let i = 1; i < len; i++) {
        // now表示粉刷到当前房子时对应的价格状态
        const now = costs[i]
        // prev表示粉刷到上一个房子时的价格状态
        const prev = costs[i - 1]
        // 更新当前状态下，刷三种油漆对应的三种最优价格
        now[0] += Math.min(prev[1], prev[2])
        now[1] += Math.min(prev[0], prev[2])
        now[2] += Math.min(prev[1], prev[0])
    }
    // 返回粉刷到最后一个房子时，总价格的最小值
    return Math.min(costs[len - 1][0], costs[len - 1][1], costs[len - 1][2])
};